1. Field of the Invention
The present invention generally relates to data storage systems and methods, and, more particularly, to a methodology for reducing redundancy-update lock communication overhead using whole-file and dual-mode locks in a distributed object-based data storage system.
2. Description of Related Art
In a distributed data storage system, servers and client computers may interact with each other and with data storage disks or other system agents in a pre-defined manner. For example, client computers may read from or write into the storage disks various types of data including, for example, normal application-specific data or redundant information being stored for fault tolerance. Various levels of RAID (Redundant Array of Independent Disks) may be implemented for desired storage system fault tolerance configuration. In any event, whenever the regular (non-redundant) data is modified, typical fault tolerance configurations (e.g., RAID) require that the redundant data be modified as well. If multiple independent threads of control (e.g., multiple client computers) wish to simultaneously modify redundant information, they must use some sort of conflict resolution strategy (e.g., locking) to assure that their independent updates do not conflict with each other and, hence, do not corrupt the redundantly-stored information. Thus, the term “lock”, as used hereinbelow, may be generally defined as a mechanism to regulate access to a file by multiple clients, wherein the file may contain non-redundant as well as redundant data.
In most data storage systems, the updating of redundant information is done under the control of exactly one computer. This arrangement reduces locking overhead because any communication it invokes is purely local to one computer. However, in modern distributed, network-based data storage architectures, locking may introduce a heavy burden of network communication between client computers and servers, which can greatly reduce system performance. For example, in some storage systems, lock-related network traffic may be present even when only one client computer is accessing a particular file. Therefore, it is desirable to reduce this lock-related traffic to the maximum extent possible in a distributed data storage system.
In some prior art data storage systems, a single type of lock would be used at all times whether the file to be accessed is in a fault-free state or in a degraded state (i.e., when the file is affected by the non-availability of one or more disks on which the data for that file is stored). In other words, such prior data storage systems do not change the locking strategy at the transition between the fault-free mode and the degraded mode. In those data storage systems, using a single locking strategy does not impose a heavy burden on the system because either (a) all operations are serially executed in a dedicated hardware controller, obviating the need for locking, or (b) all redundancy computations are performed on one computer, eliminating the need for network communication associated with lock acquisition and release. However, in certain distributed data storage architectures, such single locking strategy may not reduce lock-related network traffic and, hence, additional measures may be needed to reduce lock-related network communication overhead.
Therefore, it is desirable to devise a data storage methodology wherein the locking strategy employs different types of locks when a data-containing file transitions from a fault-free mode into a degraded mode and vice-versa. It is further desirable to minimize lock-related network traffic in the event that there is only one client computer accessing a particular file.